エキスパートPythonプログラミング 改訂4版
https://scrapbox.io/files/650e851b46473d001cfec52a.pnghttps://scrapbox.io/files/650e853f3e3044001cb4d47f.png
基本情報
書籍名: エキスパートPythonプログラミング 改訂4版
ページ数: 584
金額: 3900円+税
紹介リンク
ステータス
本の概要
進化し続けるPythonの最新プログラミング環境を徹底解説!
Pythonプログラマ必読と言われるベストセラーが、最新のPython環境に合わせて全面改訂されました。今回の改訂では本書の構成を一から見直し、現代のPythonプログラマが身につけるべき技術・ノウハウを学びやすく、より身につけやすくしています。本書は、Pythonを使って仕事をしている開発者が普段どのようなツールやテクニックを用いて仕事をしているのか、また開発者が実際に現場で用いているベストプラクティスについて解説した書籍です。本書を読むことで、先進的なPythonプログラマが日常的に使用している開発ノウハウを学ぶことができます。
目次
◆目次
はじめに
本書はだれのために書かれたのか?
本書でカバーしている内容
本書を最大限に活かすために
サンプルソースコードのダウンロード
本書の表記法
第1章 現在のPythonのステータス
1.1 今どこにいて、どこに向かおうとしているのか?
1.2 Python 2の扱い方
1.3 最新情報への追従
1.3.1 PEP文書
1.3.2 活動しているコミュニティ
1.3.3 その他のリソース
1.4 まとめ
第2章 現代的なPythonの開発環境
2.1 事前準備
2.2 Pythonのパッケージングエコシステム
2.2.1 pipコマンドを利用したPythonパッケージのインストール
2.3 実行環境の分離
2.3.1 アプリケーションレベルの分離とシステムレベルの分離
2.4 アプリケーションレベルの環境分離
2.4.1 Poetryによる依存パッケージ管理
2.5 システムレベルの環境分離
2.5.1 コンテナ化と仮想化
2.5.2 Dockerを使った仮想環境
2.5.3 Vagrantを使った仮想的な開発環境
2.6 人気のある生産性向上ツール
2.6.1 拡張インタラクティブセッション
2.6.2 IPythonを使う
2.6.3 スクリプトやプログラムにシェルを組み込む
2.6.4 インタラクティブ・デバッガ
2.6.5 その他の生産性向上ツール
2.7 まとめ
第3章 Pythonの新しい要素
3.1 事前準備
3.2 最近追加された言語機能
3.2.1 辞書のマージと更新の演算子
3.3 代入式
3.3.1 構造的パターンマッチ
3.3.2 型ヒントのジェネリック型
3.3.3 Union型と | 演算子
3.3.4 位置専用引数
3.3.5 zoneinfo モジュール
3.3.6 graphlib モジュール
3.4 新機能ではないが、依然として輝いている機能
3.4.1 breakpoint() 関数
3.4.2 開発モード
3.4.3 モジュールレベルの __getattr__() と __dir__() 関数
3.4.4 f-stringを使った文字列のフォーマット
3.4.5 数値リテラルのアンダースコア
3.4.6 secretsモジュール
3.5 まとめ
第4章 Pythonと他の言語の比較
4.1 事前準備
4.2 クラスモデルとオブジェクト指向プログラミング
4.2.1 スーパークラスへのアクセス
4.2.2 多重継承とメソッド解決順序
4.2.3 クラスインスタンスの初期化
4.2.4 属性アクセスのパターン
4.2.5 ディスクリプタ
4.2.6 プロパティ
4.3 動的ポリモーフィズム
4.3.1 演算子のオーバーロード
4.3.2 関数とメソッドのオーバーロード
4.4 データクラス
4.5 関数型プログラミング
4.5.1 ラムダ関数
4.5.2 map()、filter()、reduce()関数
4.5.3 部分オブジェクトとpartial()関数
4.5.4 ジェネレータ
4.5.5 ジェネレータ式
4.5.6 デコレータ
4.6 列挙型
4.7 まとめ
第5章 インターフェイス、パターン、モジュール化
5.1 事前準備
5.1.1 インターフェイス
5.1.2 簡単な歴史: zope.interface
5.1.3 関数アノテーションや抽象基底クラスを使用する
5.1.4 型アノテーションを使ったインターフェイス
5.2 制御の反転と依存性注入
5.2.1 アプリケーションにおける制御の反転
5.2.2 依存性注入フレームワークの利用
5.3 まとめ
第6章 並行処理
6.1 事前準備
6.2 並行性とは何か?
6.3 マルチスレッド
6.3.1 マルチスレッドとは?
6.3.2 Pythonはどのようにスレッドを扱うのか?
6.3.3 いつマルチスレッドを使うべきか?
6.3.4 マルチスレッドを使用したアプリケーション例
6.4 マルチプロセス
6.4.1 multiprocessing
6.4.2 プロセスプールを使う
6.4.3 マルチスレッドのためのmultiprocessing.dummy
6.5 非同期プログラミング
6.5.1 協調的マルチタスクと非同期I/O
6.5.2 Pythonにおける async と await
6.5.3 非同期プログラミングの実践例
6.5.4 Future を利用して同期コードを結合する
6.6 まとめ
第7章 イベント駆動プログラミング
7.1 事前準備
7.2 イベント駆動型プログラミングとは何か
7.2.1 イベント駆動 != 非同期
7.2.2 GUIにおけるイベント駆動プログラミング
7.2.3 イベント駆動通信
7.3 イベント駆動プログラミングのスタイル
7.3.1 Callback-basedスタイル
7.3.2 Subject-based スタイル
7.3.3 Topic-based スタイル
7.4 イベント駆動アーキテクチャ
7.4.1 イベントとメッセージキュー
7.5 まとめ
第8章 メタプログラミングの要素
8.1 事前準備
8.2 メタプログラミングとは何か?
8.3 デコレータを使って実行前の関数を変更する
8.3.1 さらなる深みへ: クラスデコレータ
8.4 クラスインスタンスの生成処理への割り込み
8.5 メタクラス
8.5.1 メタクラスの構文
8.5.2 メタクラスの使用例
8.5.3 メタクラスの落とし穴
8.5.4 メタクラスの代わりに __init_subclass__() メソッドを利用する
8.6 コード生成
8.6.1 exec, eval と compile
8.6.2 抽象構文木
8.6.3 importフック
8.6.4 Pythonによるコード生成の注目すべき例
8.7 まとめ
第9章 PythonとC/C++をつなぐ
9.1 事前準備
9.2 拡張モジュールの中心となるC/C++
9.3 拡張モジュールのコンパイルとロード
9.4 拡張モジュールを使う理由
9.4.1 コードのクリティカルな部分の性能を向上する
9.4.2 別の言語で書かれたコードを利用する
9.4.3 サードパーティーの動的ライブラリを利用する
9.4.4 効率の良い独自のデータ構造を作る
9.5 拡張モジュールを書く
9.5.1 ピュアC拡張モジュール
9.5.2 Cythonを使って拡張モジュールを書く
9.6 拡張モジュールのデメリット
9.6.1 増加する複雑さ
9.6.2 デバッグの難しさ
9.7 拡張モジュールを使わずに動的ライブラリを利用する
9.7.1 ctypesモジュール
9.7.2 CFFI
9.8 まとめ
第10章 テストと品質保証の自動化
10.1 事前準備
10.2 テスト駆動開発の原則
10.3 pytestを使ったテストの書き方
10.3.1 パラメータ化テスト
10.3.2 pytestのフィクスチャ
10.3.3 スタブの利用
10.3.4 モックとunittest.mockモジュール
10.4 品質保証の自動化
10.4.1 テストカバレッジ
10.4.2 スタイルフィクサーとコードリンター
10.4.3 静的型解析
10.5 ミューテーションテスト
10.6 便利なテストユーティリティ
10.6.1 リアルなデータのフェイク
10.6.2 時間のフェイク
10.7 まとめ
第11章 Pythonパッケージの作成と配布
11.1 事前準備
11.2 ライブラリのパッケージ作成と配布
11.2.1 Pythonパッケージの構造
11.2.2 パッケージ配布物の種類
11.2.3 パッケージの登録と公開
11.2.4 パッケージのバージョンと依存の管理
11.2.5 自分のパッケージをインストールする
11.2.6 名前空間パッケージ
11.2.7 パッケージスクリプトとエントリーポイント
11.3 Webアプリケーションのためのパッケージ作成
11.3.1 Twelve-Factor App 宣言
11.3.2 Dockerの有効性
11.3.3 環境変数の扱い
11.3.4 アプリケーションフレームワークにおける環境変数の役割
11.4 スタンドアローン実行形式の作成
11.4.1 スタンドアローン実行形式が便利なシーン
11.4.2 人気のあるツール
11.4.3 実行可能形式のパッケージにおけるPythonコードの難読化
11.5 まとめ
第12章 アプリケーションの挙動とパフォーマンスの監視
12.1 事前準備
12.2 エラーとログ情報の取得
12.2.1 Pythonのログの要点
12.2.2 良いログのプラクティス
12.2.3 分散ログ
12.2.4 あとで確認するためにエラーを取得する
12.3 カスタムメトリクス取得のためにコードに計装する
12.3.1 Prometheusを利用する
12.4 分散アプリケーションのトレーシング
12.4.1 Jaegerによる分散トレーシング
12.5 まとめ
第13章 最適化
13.1 事前準備
13.2 パフォーマンスの問題の原因
13.2.1 コードの複雑さ
13.2.2 過度なリソース確保とリーク
13.2.3 過剰なI/Oとブロッキング処理
13.3 コードのプロファイリング
13.3.1 CPU使用量のプロファイル
13.3.2 メモリ使用量のプロファイリング
13.4 正しいデータ構造を選び計算量を減らす
13.4.1 リストからの探索
13.4.2 setを使う
13.4.3 collectionsモジュールを使う
13.5 トレードオフを利用する
13.5.1 ヒューリスティックアルゴリズムや近似アルゴリズムを使う
13.5.2 タスクキューを使って遅延処理を行う
13.5.3 確率的データ構造を利用する
13.5.4 キャッシュ
13.6 まとめ
索引
本の感想
お勧めの読者
先進的なPythonプログラマが日常的に使用している開発ノウハウを学びたい方
扱っている分野
動機、価格
584ページ 3900円です!4版は中身も相当濃いですよ!!
https://scrapbox.io/files/65583235758b94001c2129f6.png
入手金額: なし(翻訳者の見本のため)
入手フォーマット: 紙
入手動機: 翻訳者
動機は満たされたか: はい
関連リンク